#include <malloc.h>
#include <stdbool.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include "form.h"
#include "parcel.h"

void do_get();
void do_post();
void do_error();

int main()
{
    char* req_method = getenv("REQUEST_METHOD");

    if (NULL == req_method) {
        do_error();
    }

    if (strcasecmp(req_method, "POST") == 0) {
        do_post();
    } else {
        do_error();
    }

    return 0;
}

void do_post()
{
    char* p_content_len = getenv("CONTENT_LENGTH");
    char* content_type = getenv("CONTENT_TYPE");
    int content_len = 0;

    if (p_content_len == NULL) {
        do_error();
    }

    content_len = atoi(p_content_len);

    printf("Content-type: text/plain; charset=utf-8\n\n");

    char* input_buf = malloc((content_len + 1) * sizeof(char));

    memcpy(input_buf, stdin, content_len);
    fread(input_buf, sizeof(char), content_len, stdin);
    input_buf[content_len] = '\0';

    // printf("%s\n", content_type);
    // printf("%s\n", input_buf);

    Form* form = build_form(input_buf, content_len);

    if (save_parcel(form)) {
        printf("success");
    } else {
        printf("failure");
    }

    delete_form(form);
    free(input_buf);
}

void do_error()
{
    printf("Content-type: text/html; charset=utf-8\n\n");
    printf("That's not how you use it, fool.</h1>\n");
    exit(0);
}

